Обобщенное программирование с комбинаторами и объектами
Аннотация:
Предмет исследования. В функциональных языках программирования (например, OCaml, Haskell) распространен подход под названием «обобщенное программирование». Его сущность состоит в автоматическом построении на этапе компиляции программ некоторого кода, который выполняет преобразования значений указанного в программе типа данных. Традиционно построенные преобразования представляются с помощью функций, реализующих алгоритм преобразования. Из функций-преобразований и пользовательских функций можно получать новые преобразования с помощью композиции. Недостатком реализации преобразований с помощью функций является монолитность этих функций — невозможно изменить поведение уже объявленной функции. Если построить подходящее преобразование не представляется возможным, программист вынужден написать преобразование вручную и без переиспользования имеющегося кода, что приводит к большим затратам труда. В работе предложено автоматически строить преобразования так, чтобы их можно было изменять после объявления. Метод. Следуя парадигме объектно-ориентированного программирования, предложено хранить преобразования не как функции, а как объекты. Вместо вызова функции вызываются методы соответствующего объекта. Реализация преобразования разбивается на несколько методов объекта. Поддерживается расширение объектов новыми методами, изменение реализации уже имеющихся методов, и за счет этого возможна модификация автоматически построенных преобразований. Основные результаты. В работе предложен способ представления преобразований с помощью объектно-ориентированных возможностей языка OCaml. Объекты-преобразования имеют столько же методов, сколько альтернатив в объявлении типа входных данных преобразования. Такое количество методов позволяет реализовать достаточно разнообразные преобразования. В работе рассмотрено, в каких случаях большее количество методов нежелательно. Метод применим к полиморфным вариантным типам языка OCaml, которые не поддерживаются другими подходами по построению расширяемых преобразований. Практическая значимость. Подход не привязан к конкретной предметной области и позволяет использовать расширяемые преобразования в языке OCaml для произвольных программ, а также может быть перенесен на другие функциональные языки с поддержкой объектно-ориентированного программирования.
Ключевые слова:
Постоянный URL
Статьи в номере
- Особенности изображений воды, льда, снега, предметов и человека, формируемых гибридной телевизионной камерой в ближнем инфракрасном диапазоне
- Анализ периодически текстурированных кремниевых солнечных элементов с использованием технологии моделирования TCAD
- Сцинтилляционные датчики гамма-излучения на основе твердотельных фотоумножителей в составе беспроводных сетей промышленного интернета
- Повышение качества сетевого управления технологическими процессами
- Геометрический подход к решению задачи для машин Дубинса при формировании программных траекторий движения
- Дрейф двумерных вакансионных островков на поверхности Si(100) в условиях электромиграции
- Исследование фотокаталитических свойств композитов хитозан-TiO2 для разложения пирена
- Кинетика трансформации формы эшелонов атомных ступеней на поверхности Si(001) в условиях электромиграции
- Аномальный диффузионный профиль адатомов на экстремально широких террасах поверхности Si (111)
- Методика эксперимента для оценивания вероятности и опасности реализации сетевых атак в автоматизированных системах
- Метод отбора мета-признаков на основе фреймворка Auto-sklearn
- Автоматическое построение дерева диалога по неразмеченным текстовым корпусам на русском языке
- Машинное обучение байесовской сети доверия как инструмента оценки интенсивности процесса по данным из социальной сети
- Модели реструктуризации программного обеспечения для языка объектно-ориентированного программирования с использованием алгоритма нечеткой кластеризации
- Концепция управления сетевой структурой интеллектуальных устройств в условиях цифровой трансформации энергетической отрасли
- Защита изображений лиц от распознавания в социальных сетях: способы решения и их перспективы
- Избыточные модели контролепригодных распределенных вычислительных систем реального времени
- Исследование влияния толщины базы на фотоэлектрические параметры кремниевых солнечных элементов с использованием новых TCAD алгоритмов
- Сбалансированный алгоритм гибридного метода крупных частиц и его проверка на некоторых тестовых задачах
- Архитектура системы полнотекстового поиска по речевым данным на основе глобального индекса
- Оценка кровоснабжения мозга через интактный череп с использованием визуализирующей фотоплетизмографии